package com.stars.easyms.logger;

import org.slf4j.Logger;
import org.slf4j.Marker;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;

/**
 * <p>interfaceName: EasyMsLoggerHandler</p>
 * <p>description: EasyMs自定义日志处理接口类</p>
 *
 * @author guoguifang
 * @date 2019-08-19 12:12
 * @since 1.3.0
 */
public interface EasyMsLoggerHandler<E> {

    /**
     * 过滤并返回日志事件对象
     *
     * @param logger    日志打印对象
     * @param marker    标记
     * @param levelStr  日志等级字符串
     * @param msg       日志消息
     * @param params    日志占位符参数
     * @param throwable 异常
     * @return 日志事件对象
     */
    @Nullable
    E filterAndGetEvent(Logger logger, Marker marker, String levelStr, String msg, Object[] params, Throwable throwable);

    /**
     * 打印日志
     *
     * @param e  日志事件对象
     */
    void append(@NonNull E e);
}
